调度系统 | Airflow 快速入门
作者:Corwien
来源:SegmentFault 思否社区
一、Airflow简介
Airflow 是一个使用 Python 语言编写的 Data Pipeline 调度和监控工作流的平台。
Airflow 是通过 DAG(Directed acyclic graph 有向无环图)来管理任务流程的任务调度工具,不需要知道业务数据的具体内容,设置任务的依赖关系即可实现任务调度。
这个平台拥有和 Hive、Presto、MySQL、HDFS、Postgres 等数据源之间交互的能力,并且提供了钩子(hook)使其拥有很好地扩展性。除了使用命令行,该工具还提供了一个 WebUI 可以可视化的查看依赖关系、监控进度、触发任务等。
Airflow 的架构
在一个可扩展的生产环境中,Airflow 含有以下组件:
元数据库:这个数据库存储有关任务状态的信息。
调度器:Scheduler 是一种使用 DAG 定义结合元数据中的任务状态来决定哪些任务需要被执行以及任务执行优先级的过程。调度器通常作为服务运行。
执行器:Executor 是一个消息队列进程,它被绑定到调度器中,用于确定实际执行每个任务计划的工作进程。有不同类型的执行器,每个执行器都使用一个指定工作进程的类来执行任务。例如,LocalExecutor 使用与调度器进程在同一台机器上运行的并行进程执行任务。其他像 CeleryExecutor 的执行器使用存在于独立的工作机器集群中的工作进程执行任务。
Workers:这些是实际执行任务逻辑的进程,由正在使用的执行器确定。
Airflow 解决哪些问题
二、安装及使用
1、安装airflow
pip install apache-airflow
Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot
PyYAML
# 亲测可用
pip install apache-airflow --ignore-installed PyYAML
[root@quant ~]# airflow -h
usage: airflow [-h] GROUP_OR_COMMAND ...
positional arguments:
GROUP_OR_COMMAND
Groups:
celery Celery components
config View configuration
connections Manage connections
dags Manage DAGs
db Database operations
kubernetes Tools to help run the KubernetesExecutor
pools Manage pools
providers Display providers
roles Manage roles
tasks Manage tasks
users Manage users
variables Manage variables
Commands:
cheat-sheet Display cheat sheet
info Show information about current Airflow and environment
kerberos Start a kerberos ticket renewer
plugins Dump information about loaded plugins
rotate-fernet-key
Rotate encrypted connection credentials and variables
scheduler Start a scheduler instance
sync-perm Update permissions for existing roles and DAGs
version Show the version
webserver Start a Airflow webserver instance
optional arguments:
-h, --help show this help message and exit
[root@quant ~]#
2、初始化数据库
# initialize the database
airflow db init
ImportError: Something is wrong with the numpy installation. While importing we detected an older version of numpy
如报错信息所说
再卸载numpy,直到卸载到提示信息显示,此时完全已经没有numpy了为止
下载numpy:pip install numpy
此时应该可用;
若不可用,查看python安装目录下的libs文件夹,删除掉其中的另一个dll文件,应该可用。
3、添加用户
airflow users create \
--username admin \
--firstname Corwien \
--lastname Wong \
--role Admin \
--email 407544577@qq.com
quant
4、启动web服务
# start the web server, default port is 8080
airflow webserver --port 8080a
5、启动定时任务
# start the scheduler
# open a new terminal or else run webserver with ``-D`` option to run it as a daemon
airflow scheduler
# visit localhost:8080 in the browser and use the admin account you just
# created to login. Enable the example_bash_operator dag in the home page
点击上面文字即可跳转专题
还想看更多?
戳下面查看更多干货👇
淘宝、美团、滴滴分别如何搭建大数据平台
小米用户画像实战(附48页PPT)
字节跳动,5面,终于拿下!